home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / LGP250S1.ZIP / src / libgplus.5 / libgplus / test-ins / foo.cc < prev    next >
C/C++ Source or Header  |  1992-01-04  |  2KB  |  90 lines

  1. // Class Foo
  2. //#pragma implementation
  3.  
  4.  
  5. // We don't use header files, since we only want to see, whether the
  6. // compiler is installed properly.
  7. //
  8. #if (__GNUG__ == 2)
  9. typedef __SIZE_TYPE__ size_t;
  10. #else
  11. typedef unsigned int size_t;
  12. #endif
  13.  
  14. extern "C" {
  15.     char *strncpy (char* dest, const char* dest, size_t len);
  16.     int printf (const char*, ...);
  17. };
  18.  
  19. #include "Foo.h"
  20.  
  21. int Foo::foos = 0;
  22.  
  23. void Foo::init_foo ()
  24. {
  25.     printf ("BROKENLY calling Foo::init_foo from __init_start; size_of(Foo) = %d\n", sizeof(Foo));
  26.     foos = FOOLISH_NUMBER;
  27. }
  28.  
  29.  
  30. Foo::Foo ()
  31. {
  32.     i = ++foos;
  33.     strncpy (message, "default-foo", len);
  34. #ifdef WITH_ADDR
  35.     printf ("Constructing Foo(%d) \"default-foo\" at %08x\n", i, this);
  36. #else
  37.     printf ("Constructing Foo(%d) \"default-foo\"\n", i);
  38. #endif
  39. }
  40.  
  41. Foo::Foo (char* msg)
  42. {
  43.     i = ++foos;
  44.     strncpy( message, msg, len);
  45. #ifdef WITH_ADDR
  46.     printf ( "Constructing Foo(%d) \"%s\" at %08x\n", i, message, this);
  47. #else
  48.     printf ( "Constructing Foo(%d) \"%s\"\n", i, message);
  49. #endif
  50. }
  51.  
  52.  
  53. Foo::Foo (const Foo& foo)
  54. {
  55.     i = ++foos;
  56. #ifdef WITH_ADDR
  57.     printf ("Initializing Foo(%d) \"%s\" at %08x with Foo(%d) %08x\n", 
  58.         i, foo.message, this, foo.i, &foo);
  59. #else
  60.    printf ("Initializing Foo(%d) \"%s\" with Foo(%d)\n",i, foo.message, foo.i);
  61. #endif
  62.     for ( int k = 0; k < FOO_MSG_LEN; k++) message[k] = foo.message[k];
  63. }
  64.  
  65.  
  66. Foo& Foo::operator= (const Foo& foo)
  67. {
  68. #ifdef WITH_ADDR
  69.     printf ("Copying Foo(%d) \"%s\" at %08x to Foo(%d) %08x\n", 
  70.         foo.i, foo.message, &foo, i, this);
  71. #else
  72.    printf ("Copying Foo(%d) \"%s\" to Foo(%d)\n", foo.i, foo.message, i);
  73. #endif
  74.     for ( int k = 0; k < FOO_MSG_LEN; k++) message[k] = foo.message[k];
  75.     return *this;
  76. }
  77.  
  78.  
  79. Foo::~Foo ()
  80. {
  81.     foos--;
  82. #ifdef WITH_ADDR
  83.     printf ("Destructing Foo(%d) \"%s\" at %08x (remaining foos: %d)\n",
  84.         i, message, this, foos);
  85. #else
  86.     printf ("Destructing Foo(%d) \"%s\" (remaining foos: %d)\n",
  87.         i, message, foos);
  88. #endif
  89. }
  90.